package com.xin.mapper;

import com.alibaba.fastjson.JSONObject;
import com.xin.entity.UTeacherInfo;
import com.baomidou.mybatisplus.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * <p>
  * 教师信息 Mapper 接口
 * </p>
 *
 * @author l1
 * @since 2017-10-23
 */
public interface UTeacherInfoDao extends BaseMapper<UTeacherInfo> {

    /**
     * 分类统计
     */
    public List<JSONObject> statCategory(@Param("subjectCategory") String subjectCategory);

    /**
     * 分类统计
     */
    public List<JSONObject> statCategoryByList(List<String> subjectCategories);

    /**
     * 分类统计
     */
    public List<JSONObject> statCategoryBySubject(@Param("subjectCategory") String subjectCategory,@Param("subjects") List<String> subjects);

    /**
     * 按照二级目录(学院) 统计
     *
     */
    public List<JSONObject> statSubject(@Param("subjectCategory") String subjectCategory,@Param("subjectAttribution") String subjectAttribution);

    public List<JSONObject> statSubjectByList(@Param("subjectCategory") String subjectCategory,@Param("subjects") List<String> subjects);

    /**
     * 按照专业统计
     */
    public List<JSONObject> statprofessional(
            @Param("subjectCategory") String subjectCategory,
            @Param("subjectAttribution") String subjectAttribution,
            @Param("prefessionalAttribution") String prefessionalAttribution);

    /**
     * 按照一级目录和二级目录统计在职,退休人员
     *
     */
    public List<JSONObject> statStatus(
            @Param("subjectCategory") String subjectCategory,
            @Param("subjectAttribution") String subjectAttribution,
            @Param("professionalAttribution") String professionalAttribution
    );
    /**
     * 按照一级目录和二级目录统计在职,退休人员
     *
     */
    public List<JSONObject> statStatusBySubject(
            @Param("subjectCategory") String subjectCategory,
            @Param("subjects") List<String> subjects
    );

    /**
     * 按照一级目录和二级目录统计在职,退休人员
     *
     */
    public List<JSONObject> statStatusByProfession(
            @Param("subjectAttribution") String subjectAttribution,
            @Param("prefessiones") List<String> prefessiones
    );

    /**
     * 按照一级目录和二级目录统计在职,退休人员
     *
     */
    public List<JSONObject> statSubjectByProfessional(
            @Param("subjectAttribution") String subjectAttribution,
            @Param("professiones") List<String> professiones
    );

    /**
     * 按照一级或者二级目录,或者在职或者退休人员 统计教师,管理,技术等职位分类人员
     *
     */
    public List<JSONObject> statJobCategory(
            @Param("subjectCategory") String subjectCategory,
            @Param("subjectAttribution") String subjectAttribution,
            @Param("professionalAttribution") String professionalAttribution,
            @Param("status") String status
    );
    /**
     * 按照一级或者二级目录,或者在职或者退休人员 统计教师,管理,技术等职位分类人员
     *
     */
    public List<JSONObject> statJobCategoryByList(
            @Param("subjectCategory") String subjectCategory,
            @Param("subjectAttribution") String subjectAttribution,
            @Param("professionalAttribution") String professionalAttribution,
            @Param("subjects") List<String> subjects,
            @Param("status") String status
    );

    /**
     * 按照一级或者二级目录,或者岗位类别 统计岗位级别(高/中/低)人数
     *
     */
    public List<JSONObject> statJobLevel(
            @Param("subjectCategory") String subjectCategory,
            @Param("subjectAttribution") String subjectAttribution,
            @Param("professionalAttribution") String professionalAttribution,
            @Param("jobCategory") String jobCategory
    );

    /**
     * 查找分类下有多少部门
     */

    public List<String> findDistinctSubject(@Param("subjectCategory") String subjectCategory);


    /**
     * 查找部门下有多少专业
     */
    public List<String> findDistinctProfessional(@Param("subjectCategory") String subjectCategory,@Param("subjectAttribution") String subjectAttribution);


    public List<JSONObject> findOrgs();
}